home *** CD-ROM | disk | FTP | other *** search
/ Apple WWDC 1996 / WWDC96_1996 (CD).toast / Technology Materials / MacOS 8 Resources / Developer Tools / Mac OS 8 Interfaces & Libraries / Interfaces / CIncludes / ADB.h next >
C/C++ Source or Header  |  1996-05-01  |  4KB  |  140 lines

  1. /*
  2.      File:        ADB.h
  3.  
  4.      Contains:    ADB Interface for System 8
  5.  
  6.      Version:    Technology:    
  7.                  Release:    Universal Interfaces 3.0d3 on Copland DR1
  8.  
  9.      Copyright:    © 1984-1996 by Apple Computer, Inc.  All rights reserved.
  10.  
  11.      Bugs?:        If you find a problem with this file, send the file and version
  12.                  information (from above) and the problem description to:
  13.  
  14.                      Internet:    apple.bugs@applelink.apple.com
  15.                      AppleLink:    APPLE.BUGS
  16.  
  17. */
  18. #ifndef __ADB__
  19. #define __ADB__
  20.  
  21. #ifndef __TYPES__
  22. #include <Types.h>
  23. #endif
  24. #ifndef __IOITERATOR__
  25. #include <IOIterator.h>
  26. #endif
  27.  
  28. #ifdef __cplusplus
  29. extern "C" {
  30. #endif
  31.  
  32. #if PRAGMA_IMPORT_SUPPORTED
  33. #pragma import on
  34. #endif
  35.  
  36. #if PRAGMA_ALIGN_SUPPORTED
  37. #pragma options align=power
  38. /* the following contents can only be used by compilers that support PowerPC struct alignment */
  39.  
  40. #if FOR_SYSTEM8_PREEMPTIVE
  41. /*
  42. ------------------------------------------------------------------------------------
  43.   Types
  44. ------------------------------------------------------------------------------------
  45. */
  46.  
  47. enum {
  48.     kADBCurrentIteratorDescVersion = 1
  49. };
  50.  
  51. struct ADBIOIteratorData {
  52.     IOCommonInfo                     IOCI;                        /* common data for all families    */
  53.     Byte                             currentAddress;
  54.     Byte                             defaultAddress;
  55.     Byte                             defaultHandlerID;
  56. };
  57. typedef struct ADBIOIteratorData ADBIOIteratorData;
  58.  
  59. typedef UInt32 ADBConnectionID;
  60. struct ADBRegisterContents {
  61.     Byte                             data[8];
  62.     ByteCount                         length;
  63. };
  64. typedef struct ADBRegisterContents ADBRegisterContents;
  65.  
  66. /*
  67. ------------------------------------------------------------------------------------
  68.   Calls
  69. ------------------------------------------------------------------------------------
  70. */
  71. extern OSStatus ADBGetDeviceData(ItemCount requestCount, ItemCount *totalCount, ADBIOIteratorData *deviceData);
  72.  
  73. extern OSStatus ADBOpen(const IODeviceRef *ref, ADBConnectionID *connection);
  74.  
  75. extern OSStatus ADBClose(ADBConnectionID connection);
  76.  
  77. extern OSStatus ADBGetNextAutopoll(ADBConnectionID connection, Duration timeOut, ADBRegisterContents *contents, AbsoluteTime *timestamp);
  78.  
  79. /* ADBGetRegister sends a Talk command over the wire*/
  80. extern OSStatus ADBGetRegister(ADBConnectionID connection, Byte registerNumber, ADBRegisterContents *contents, AbsoluteTime *timestamp);
  81.  
  82. /*
  83.  ADBSetRegister sends a Listen command over the wire
  84.  Note, only allowed for registers 0, 1, and 2
  85.  Use the specific calls to set individual fields of register 3
  86. */
  87. extern OSStatus ADBSetRegister(ADBConnectionID connection, Byte registerNumber, const ADBRegisterContents *contents);
  88.  
  89. extern OSStatus ADBGetHandlerID(ADBConnectionID connection, Byte *handlerID);
  90.  
  91. extern OSStatus ADBSetHandlerID(ADBConnectionID connection, Byte handlerID);
  92.  
  93. /*
  94.  for ADBGetStatusBits and ADBSetStatusBits,
  95.  the 4 most significant bits of the bits parameter
  96.  contain the 4 most significant bits of the first byte of device register 3
  97. */
  98. extern OSStatus ADBGetStatusBits(ADBConnectionID connection, Byte *bits);
  99.  
  100. extern OSStatus ADBSetStatusBits(ADBConnectionID connection, Byte bits);
  101.  
  102. /* see the Guide to Macintosh Family Hardware for more info on an ADB device activator*/
  103. extern OSStatus ADBTestActivator(ADBConnectionID connection, Boolean *activatorPressed);
  104.  
  105. extern OSStatus ADBFlush(ADBConnectionID connection);
  106.  
  107. extern OSStatus ADBResetBus(void );
  108.  
  109. /*
  110. ------------------------------------------------------------------------------------
  111.   status codes
  112. ------------------------------------------------------------------------------------
  113. */
  114. /* ADB assigned range is -30279 to -30260 inclusive*/
  115.  
  116. enum {
  117.     adbDeviceBusyErr            = -30279,                        /* device already Opened*/
  118.     adbInvalidConnectionIDErr    = -30278,
  119.     adbConnectionTerminatedErr    = -30277,                        /* device closed or unplugged during the call*/
  120.     adbDeviceTimeoutErr            = -30276,
  121.     adbReservedHandlerIDErr        = -30275,
  122.     adbInvalidHandlerIDErr        = -30274
  123. };
  124.  
  125. #endif
  126.  
  127. #pragma options align=reset
  128. #endif /* PRAGMA_ALIGN_SUPPORTED */
  129.  
  130. #if PRAGMA_IMPORT_SUPPORTED
  131. #pragma import off
  132. #endif
  133.  
  134. #ifdef __cplusplus
  135. }
  136. #endif
  137.  
  138. #endif /* __ADB__ */
  139.  
  140.